package cn.it.shop.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;

/**
 * ClassName: JsonUtil
 * @Description: 解析json字符串工具类
 * @author fangyangsheng
 */
public class JsonUtil {
	
	/**
	 * 解析json格式字符串,返回map
	 * @param resultJson
	 * @return
	 */
	public static Map<String,Object> analyzeJsonMap(String resultJson){
		//保存返回结果的map
		HashMap<String,Object> map = new HashMap<String,Object>();
		//字符串转为JSONObject
		JSONObject jsonResult = JSONObject.fromObject(resultJson);
		//获取json所有的key的set集合
		Set<String> set = jsonResult.keySet();//获取所有的key
		for(String key : set){
			map.put(key, jsonResult.get(key));
		}
		return map;
	}
	
	/**
	 * 解析json格式字符串数组,返回list
	 * @param resultJson
	 * @return
	 */
	public static List<Object> analyzeJsonList(String resultJson){
		//保存返回结果的list
		List<Object> list = new ArrayList<Object>();
		//字符串转为JSONObject
		JSONArray jsonResult = JSONArray.fromObject(resultJson);
		//获取json所有的key的set集合
		//参数1为要转换的JSONArray数据，参数2为要转换的目标数据，即List盛装的数据
		list = JSONArray.toList(jsonResult, new Object(), new JsonConfig());
		//System.out.println("list" +list);
		return list;
	}
	
	/**
	 * 解析json格式字符串数组,返回list  ,泛型
	 
	public static <T> List<T>  analyzeJsonList(String resultJson, Class<T> pojoCalss) throws Exception{
		//保存返回结果的list
		List<T> list = new ArrayList<T>();
		//字符串转为JSONObject
		JSONArray jsonResult = JSONArray.fromObject(resultJson);
		//获取json所有的key的set集合
		//参数1为要转换的JSONArray数据，参数2为要转换的目标数据，即List盛装的数据
		list = JSONArray.toList(jsonResult,new String(), new JsonConfig());
		System.out.println("list" +list);
		return list;
	}
	*/
	
	
	/**
	 * 解析json格式字符串,转为对应的实体bean
	 * @param resultJson json格式的字符串
	 * @param pojoCalss 要转的实体类
	 * @return
	 */
	public static <T> T analyzeJsonBean(String resultJson, Class<T> pojoCalss){
		try{  
		    Object pojo;//存放解析后的bean  
		    JSONObject jsonObject = JSONObject.fromObject(resultJson);  
		    pojo = net.sf.json.JSONObject.toBean(jsonObject, pojoCalss);  
		    return (T)pojo;  
		}catch(Exception ex){  
		    ex.printStackTrace();  
		    return null;  
		}
	}
	
	/***
	 * 拼装 客服信息接口参数的json(文本)
	 * @param touser OPENID
	 * @param msgtype
	 * @param content
	 * @return
	 */
	public static String messageJson(String touser,
							  String msgtype,
							  String content){
		String strJson = "{\"touser\": \"" + touser +"\"," 
						+"\"msgtype\":\""+ msgtype +"\","
						+"\"text\":{"+
								"\"content\":\""+ content +"\""
							+"}"
						+ "}";
		return strJson;
	}

	
	
	/***
	 * 拼装 客服信息接口参数的json(图片)
	 * @param touser OPENID
	 * @param msgtype 消息类型
	 * @param media_id 多媒体素材id
	 * @return
	 */
	public static String imageJson(String touser,
			String msgtype,
			String media_id){
		String strJson = "{\"touser\": \"" + touser +"\"," 
							+"\"msgtype\":\""+ msgtype +"\","
							+"\"image\":{"+
							"\"media_id\":\""+ media_id +"\""
							+"}"
						+ "}";
		return strJson;
	}
	 
	
	
	
	
}
